package com.sy.olddriver.constant;

import java.util.Arrays;
import java.util.List;

/**
 * 系统常量
 *
 * @author Administrator
 */
public class AppConstant {

    /**
     * Servlet上下文中用于存储具体的映射信息的属性名
     */
    public static final String MAPPING_OBJS_SERVLET_CONTEXT_KEY = "mapping_objs";

    /**
     * 定义JSON格式的消息类型
     */
    public static final String APPLICATION_JSON_CONTENT_TYPE = "application/json;charset=utf-8";

    /**
     * 短信验证码字符串的长度
     */
    public static final int SHORT_MESSAGE_VALIDATE_CODE_LENGTH = 4;

    /**
     * 定义用来保存短信验证码的Session的属性名
     */
    public static final String SHORT_MESSAGE_CODE_SESSION_NAME = "short_message_code_session_name";

    /**
     * 定义Cookie中用来存储用户凭证的Cookie的属性名
     */
    public static final String USER_TOKEN_COOKIE_NAME = "token";

    /**
     * 登录用户的默认过期时间
     */
    public static final Integer LOGIN_USER_VALID_TIME = 7 * 24 * 60 * 60;

    /**
     * REDIS返回操作成功的结果
     */
    public static final String REDIS_OK_RESULT = "OK";

    /**
     * 定义在Redis中用于保存用户token的键的前缀
     */
    public static final String USER_TOKEN_REDIS_PREFIX = "user_";


    /**
     * 用户需要在登录状态下才能访问的数据接口的路径
     */
    public static final List<String> URIS_WITH_SESSION = Arrays.asList("/user/updateInfo", "/user/getUserInfo", "/order/generate");


    /**
     * 整数正则
     */
    public static final String INTEGER_REGEX = "\\d+";

    /**
     * 手机号正则
     */
    public static final String PHONE_REGEX = "[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}";

    /**
     * 更新状态为0表示更新用户名
     */
    public static final String UPDATE_TYPE_NAME = "0";

    /**
     * 更新状态为1表示更新手机号
     */
    public static final String UPDATE_TYPE_PHONE = "1";

    /**
     * 合法的更新类型
     */
    public static final List<String> VALID_UPDATE_TYPES = Arrays.asList("0", "1", "2", "3", "4", "5");


    /**
     * 一级分类的父id的值
     */
    public static final Integer FIRST_LEVEL_CATEGORY_PARENT_ID = 0;


    /**
     * 分类信息在Redis中的key
     */
    public static final String CATEGORY_REDIS_KEY = "categories";

    /**
     * 首页要显示的最新商品的条数
     */
    public static final Long NEWEST_PRODUCTS_SHOW_COUNT = 10L;

    /**
     * 首页要显示的最热商品的条数
     */
    public static final Long HOTEST_PRODUCTS_SHOW_COUNT = 10L;
    /**
     * 搜索结果页中每页多少条数据
     */
    public static final int SEARCH_RESULT_PAGE_SIZE = 80;
    /**
     * 搜索页的默认页码
     */
    public static final int SEARCH_RESULT_DEFAULT_PAGENO = 1;

    /**
     * 用于在Cookie中保存离线状态下用于标识浏览记录的一个值
     */
    public static final String TEMP_HISTORY_COOKIE_NAME = "temp_history";


    /**
     * 用于在Redis中存储离线状态下客户端对应的浏览记录的key的前缀
     */
    public static final String TEMP_HISTORY_REDIS_PREFIX = "temp_history_";

    /**
     * 用于在Redis中存储登录状态下用户对应的浏览记录的key的前缀
     */
    public static final String USER_HISTORY_REDIS_PREFIX = "user_history_";


    /**
     * 用于在Cookie中保存离线状态下用于标识购物车的一个值
     */
    public static final String TEMP_CART_COOKIE_NAME = "temp_cart";
    /**
     * 用于在Redis中存储离线状态下客户端对应的购物车的key的前缀
     */
    public static final String TEMP_CART_REDIS_PREFIX = "temp_cart_";

    /**
     * 用于在Redis中存储登录状态下用户对应的购物车的key的前缀
     */
    public static final String USER_CART_REDIS_PREFIX = "user_cart_";


    /**
     * 表示删除Redis中list里边所有指定值的元素的个数
     */
    public static final Long LIST_DELTE_ALL_COUNT = 0L;


    /**
     * Redis中list的默认起始索引
     */
    public static final Long REDIS_LIST_START_INDEX_DEFAUL_VALUE = 0L;

    /**
     * 逗号
     */
    public static final String COMMA_SEPARATOR = ",";


    /**
     * Redis中用来表示订单编号中自增序列的值的key
     */
    public static final String ORDER_SEQ_REDIS_KEY = "order_seq";


    /**
     *  @author:dongxingqi
     *  @Date: 15:03
     *  @Description: 用户指定的id
     *
     */
    public static final String USER_ID="11111";
}

